package cn.akira.domain.activity.service;

import cn.akira.domain.activity.model.valobj.ActivitySkuStockKeyVO;

/**
 * @author fjl95
 * @date 2025/6/5
 * @description 活动sku库存处理接口
 */
public interface IRaffleActivitySkuStockService {
    /**
     * 获取活动sku库存消耗延迟队列
     *
     * @return 奖品库存Key信息
     * @throws InterruptedException 异常
     */
    ActivitySkuStockKeyVO takeQueueValue() throws InterruptedException;


    /**
     * 根据延迟队列，更新数据库库存
     *
     * @param sku 活动商品
     */
    void updateActivitySkuStock(Long sku);

    /**
     * 接收到MQ消息后 清空队列
     */
    void clearQueueValue();

    /**
     * 接收到MQ消息后 清空数据库库存
     *
     * @param sku 活动商品
     */
    void clearActivitySkuStock(Long sku);

}
